Data storage apparatus

ABSTRACT

A data storage apparatus comprises a memory circuit including 2 n1 ·n2 memories for storing binary information. Data of N bits from the row direction and column direction can be written and read out in parallel, and, also, such data of N bits reduced with a data reduction rate of an exponential power of 2 can be written and read out in parallel. The apparatus is used, for example, for displaying data on a display by fetching the data from common file servers connected to a private network or the like.

BACKGROUND OF THE INVENTION

In connection with storage of data, a method has been proposed in which data can be written in and read out in bit-parallel relation of N bits from independently operable N=2^(n).sbsp.1 memories in the row direction and column direction and in which, when the data reduction rate is an exponential power of 2, reduced data can be written in and read out from the N memories in bit-parallel relation of 2^(n).sbsp.1 bits in the row direction and column direction. The proposed method is such that all the data are divided into blocks each including 2^(n).sbsp.1^(+n).sbsp.2 bits in the row direction and 2^(n).sbsp.1^(+n).sbsp.2 bits in the column direction, where 2^(n).sbsp.2 is the maximum data reduction rate, and each of the blocks composed of 2^(n).sbsp.1^(+n).sbsp.2 ×2^(n).sbsp.1^(+n).sbsp.2 bits is used as a unit to be processed. According to the proposed method, the data are allocated to the N memories capable of making independent parallel operation so that the data in each of individual groups may not be allocated to the same memory when the results of sampling of the data in the same row and same column in the block at a bit interval of 2^(h) (0≦h≦n₂) are grouped into groups of N bits.

To explain the above method in which all the data in the individual groups can be allocated to the different memories when the results of sampling of the data in the same row and same column in the block at the bit interval of 2^(h) (0≦h≦n₂) are grouped into the groups of N=2^(n).sbsp.1 bits, suppose, for example, the case where N=8 and n₂ =1. According to the proposed method, the former 8 bits of the data in an i-th row (i=1-8) in the block are subjected to an (i-1)-bit cyclic shift to be stored at an address (32k₀ +i-1) in the memories m₁ to m₈ respectively; the latter 8 bits of the data in the i-th row (i=i-8) are subjected to an i-bit cyclic shift to be stored at an address (32k₀ +i+7) in the respective memories m₁ to m₈ ; the former 8 bits of the data in an i-th row (i=9-16) are subjected to an (i-8)-bit cyclic shift to be stored at an address (32k₀ +i+7) in the respective memories m₁ to m₈ ; and the latter 8 bits of the data in the i-th row (i=9-16) are subjected to an (i-7)-bit cyclic shift to be stored at an address (32k₀ +i+15) in the respective memories m₁ to m₈. FIG. 1 shows the numbered data of 16×16 bits, and FIG. 2 shows that the data shown in FIG. 1 are allocated to and stored at the individual addresses in the memories m₁ to m₈ according to the proposed method.

FIG. 3 shows the less-significant address values applied to the memories m₁ to m₈ during data writing and reading in the column direction when the data are allocated to the memories in the manner shown in FIG. 2. It will be apparent from FIG. 3 that 1 is added to the less-significant address values during data writing and reading in the column direction. (For example, when i (0≦i≦7) is the less-significant address value applied to the memory m₁, a less-significant address value given by the remainder of division of (i+j-1) by 8 is applied to a memory m_(j). The same applies also to the reading of data with a data reduction rate of 1/2. Thus, in the proposed method, the addresses applied to the memories must be converted by processing in the manner above described. Therefore, the prior art method is defective in that the scale of the address conversion processing circuit increases in proportion to the number N of the memories.

SUMMARY OF THE INVENTION

It is a primary object of the present invention to provide a data storage apparatus which includes independently operable N=2^(n).sbsp.1 memories, in which data can be written and read in bit-parallel relation of N bits in both the column direction and the row direction, in which data reduced with a data reduction rate of an exponential power of 2 can also be read in bit-parallel relation of N bits in both the row direction and the column direction, and in which the mode of processing for conversion of the addresses applied to the memories is simplified.

The present invention which attains the above object provides a data storage apparatus which includes, when the number of data to be handled in parallel is N=2^(n).sbsp.1 and the maximum data reduction rate during data reading is 2^(n).sbsp.2, a memory circuit including independently operable 2^(n).sbsp.1 memories m₁, m₂, . . . , m₂ ^(n).sbsp.1 ; n₁ address inputs a₀, a₁, . . . , a_(n).sbsb.i -i connected to each of the memories in such a relation that common address inputs a_(l) are connected to memories m₂ l+1.sub.·i-2.sbsp.l_(-j) (0≦l≦n₁₋₁, 1≦i≦2^(n).sbsp.1-1-l, 0≦j≦2^(l) -1) and common address inputs a_(l) are connected to memories m₂.sbsp.l+1.sub.·i-j ; n₂ address inputs b₀, b₁, . . . , b_(n).sbsp.2₋₁ connected to the memories in such a relation that common address inputs b_(s) are connected to memories m₂.spsb._(t+1).sub.·p-2.spsb.t_(-q) (0≦s≦n₂ -1, 1≦p≦2^(n).sbsp.1.sup. +1+t, 0≦q≦2^(t) -1, t: remainder of division of s by n₁) and common address inputs b_(s) are connected to memories m₂.spsb.t-1.sub.·p-q ;n₂ address inputs c₀, c₁, . . . , c_(n).sbsb.2₋₁ connected to the memories in such a relation that common address inputs c_(s) are connected to the memories m₂.spsb.t+1.sub.·p-2.spsb.t_(-q) and common address inputs c_(s) are connected to the memories m₂.spsb.t-1.sub.·p-q, so that address values corresponding to the positions of data during writing and reading are applied to the memories. For the purpose of storing data in the memories, a block composed of data of 2^(n).sbsp.1^(+n).sbsp.2 ×2^(n).sbsp.1^(+n) ₂ bits is divided into groups each including 2^(n).sbsp.1 bits in the row direction and column direction respectively to provide 2^(n).sbsp.2 ×2^(n).sbsp.2 sub-blocks each of which is composed of data of 2^(n).sbsp.1 ×2^(n).sbsp.1 bits, and the input data of 2^(n).sbsp.1 bits in the row direction (or column direction) of each of the subblocks are permutated under sequential correspondence between the positions of the input data in the sub-block and the row (column) numbers of the input data in the sub-block, such permutated data being allocated to be stored in the memories.

Thus, the present invention provides the following meritorious effects:

(1) In a memory circuit including independentntly operable 2^(n).sbsp.1 memories m₁, m₂, . . . , m₂.spsb.n₁ for storing permutated input data, n₁ address inputs a₀, a₁, . . . , a_(n).sbsb.1₋₁ are connected to each of the 2^(n).sbsp.1 memories in such a relation that common address inputs a_(l) to memories m₂.spsb.l+1.sub.·i-2.spsb.l_(-j) (0≦l≦n₁ -1, i≦i≦2^(n).sbsp.1^(-1-l), 0≦j≦2^(l) -1) apply an address value u_(l) and common address inputs a_(l) to memories m₂.sbsp.l+1.sub..i-j apply an address value v_(l) ; n₂ address inputs b₀, b₁, . . . , b_(n).sbsb.2₋₁ are connected to each of the 2^(n).sbsp.1 memories in such a relation that common address inputs b_(s) to memories m₂.spsb.t+1.sub. .p-2.spsb.t_(-q) (0≦s≦n₂ -1, 1≦p≦2^(n).sbsp.1^(-1-t), 0≦q≦2^(t) -1, t: remainder of division of s by n₁) apply an address value x_(s) and common address inputs b_(s) to memories m₂.spsb.t+1.sub.·p-q apply an address value y_(s) ; and n₂ address inputs c₀, c₁, . . . , c_(n).sbsb.2₋₁ are connected to each of the 2^(n).sbsp.1 memories in such a relation that common address inputs c_(s) to the memories m₂.spsb.t+1.sub..p-2.spsb.t_(-q) apply an address value w_(s) and common address inputs c_(s) to the memories m₂.spsb.t+1.sub..p-q apply an address value z_(s). In the present invention, depending on whether the address values are applied to the memories from the row direction or column direction and depending on the rate of reduction of the input data, the address values u_(l) and v_(l), x_(s) and y_(s), and w_(s) and z_(s) (0≦l≦n₁ -1, 0≦s≦n₂ -1) are controlled to be the same as or an inverted equivalent of the other respectively, so that management or processing of the addresses is facilitated.

(2) Even when the number N=2^(n).sbsp.1 of data handled in parallel increases, the circuit scale required for the address management or processing increases merely in proportion to n₁ (=log₂ N).

(3) Even when the maximum data reduction rate of 1/2n₂ increases, the circuit scale required for the address management or processing increases merely in proportion to 2n₂.

(4) Since an inverse permutation of a permutation Pk (0≦k≦n₁ -1) for permutating data is also Pk, a data permutation circuit for data writing purpose can be designed to be the same as a data permutation circuit for data reading purpose.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 shows a block composed of 16×16 bits of numbered data.

FIG. 2 shows a prior art manner of allocation of such data to memories.

FIG. 3 shows address values applied to the individual memories in the column direction for allocation of the data to the memories in the prior art manner.

FIG. 4 shows division of a block composed of 16×16 bits of data into numbered four sub-blocks.

FIG. 5 shows numbered data in each of the sub-blocks.

FIG. 6 is a block diagram of a preferred embodiment of the data storage apparatus of the present invention.

FIG. 7 shows in detail the structure of the memory circuit shown in FIG. 6.

FIG. 8(a) and 8(b) shown in detail the structure of the data permutation circuit 2 (3) shown in FIG. 6.

FIG. 9 shows the correspondence between the control signals s₀ to s₂ shown in FIG. 6 and the permutation Pk (0≦k≦7) and shows also the data permutated by application of the permutation Pk.

FIG. 10 shows in detail the structure of the selector 4 shown in FIG. 6.

FIG. 11 shows in detail the structure of the selector 5 shown in FIG. 6.

FIG. 12 shows inverse-shuffled data.

FIG. 13 shows in detail the structure of the inverse shuffle circuit shown in FIG. 6.

FIG. 14(I) and 14(II) show how the data in the block shown in FIG. 4 are allocated to the memories.

FIG. 15 shows address values applied to the memories during handling of the data in the column direction.

FIG. 16 shows address values applied to the memories when the data reduced with a reduction rate of 1/2 are read out in the row direction.

FIG. 17 shows the data reduced with the reduction rate of 1/2 and read out in the column direction and shows also the data permutated in the data permutation circuit 3.

FIG. 18 shows address values applied to the memories when the odd-numbered data in the individual columns are extracted to read out the data of 8 bits reduced with the reduction rate of 1/2.

FIG. 19 shows the data of 8 bits obtained by extraction of the odd-numbered data in the individual columns to be reduced with the reduction rate of 1/2 and shows also the data permutated in the data permutation circuit 3.

DESCRIPTION OF THE PREFERRED EMBODIMENTS

Preferred embodiments of the present invention will now be described in detail. As in the prior art case, it is supposed that the number N of bits handled in parallel is N=8, and the rate of data reduction is up to 1/2. A block composed of 16×16 bits of data is divided into four sub-blocks each of which is composed of 8×8 bits of data. FIG. 4 shows how these sub-blocks are numbered, and FIG. 5 shows how the data in each of the sub-blocks composed of 8×8 bits are numbered.

FIG. 6 is a block diagram of an embodiment of the data storage apparatus according to the present invention.

Referring to FIG. 6, the data storage apparatus comprises a memory circuit 1 including eight memories m₁ to m₈ which are operable independently of one another.

Each of the memories m₁ to m₈ constituting the memory circuit 1 has three address inputs a₀, a₁ and a₂. The connection is such that the address inputs a₀ specifying an address value u₀ are connected in common to the memories m₁, m₃, m₅ and m₇ ; the address inputs a₀ specifying an address value v₀ are connected in common to the memories m₂, m₄, m₆ and m₈ ; the address inputs a₁ specifying an address value u₁ are connected in common to the memories m₁, m₂, m₅ and m₆ ; the address inputs a₁ specifying an address value v₁ are connected in common to the memories m₃, m₄, m₇ and m₈ ; the address inputs a₂ specifying an address value u₂ are connected in common to the memories m₁, m₂, m₃ and m₄ ; and the address inputs a₂ specifying an address value v₂ are connected in common to the memories m₅, m₆, m₇ and m₈. Each of the memories m₂ to m₈ has another address input b₀. The connection is such that the address inputs b₀ specifying an address value x₀ are connected in common to the memories m₁ ; m₃, m₅ and m₇ ; and the address inputs b₀ specifying an address value y₀ are connected in common to the memories m₂, m₄, m₆ and m₈. Each of the memories m₁ to m₈ has another address input c₀. The connection is such that the address inputs c₀ specifying an address value w₀ are connected in common to the memories m₁, m₃, m₅ and m₇ ; and the address inputs c₀ specifying an address value z₀ are connected in common to the memories m₂, m₄, m₆ and m₈. Remaining address inputs n₀ are connected in common to all of the memories m₁ to m₈. FIG. 7 shows in detail the address input connections in the memory circuit 1.

Data permutation circuits 2 and 3 make permutation of data. Permutation of the 1st and 2nd data, the 3rd and 4th data, the 5th and 6th data, and the 7th and 8th data in the orderly arranged 8 data is called a permutation P₁. Permutation of the 1st and 3rd data, the 2nd and 4th data, the 5th and 7th data, and the 6th and 8th data is called a permutation P₂. Permutation of the 1st and 5th data, the 2nd and 6th data, the 3rd and 7th data, and the 4th and 8th data is called a permutation P₄. Making the permutation P₂ after attainment of the permutation P₁ is called a composed permutation P₃. Making the permutation P₄ after attainment of the permutation P₁ is also called a composed permutation P.sub. 5. Making the permutation P₄ after attainment of the permutation P₂ is also called a composed permutation P₆. Making the permutation P₄ after attainment of the permutation P₃ is also called a composed permutation P₇. Making no data permutation is called an identity permutation P₀. Under control of external control signals s₀ to s₂, the data permutation circuits 2 and 3 execute a selected one of the permutations P₀ to P₇ for the desired permutation of the data. FIG. 8(a) shows in detail the structure of each of the data permutation circuits 2 and 3 composed of unit cells, and FIG. 8(b) shows in detail the structure of each unit cell. FIG. 9 shows the correspondence between the control signals s₀ to s₂ and the permutations Pk (0≦k≦7) executed by the data permutation circuits 2 and 3 and shows also the results of permutation of the data which have been initially arranged orderly from 1 to 8.

Referring to FIG. 8(a), the control signals s₀ to s₂ are selectively applied to control signal input terminals e of the cells 21--1 to 21--12. Depending on the level of the control signals s₀ to s₂, an input data applied to a terminal a appears at a terminal c of a selected cell, and an input data applied to a terminal b appears at a terminal d of the selected cell, or the input data applied to the terminal b appears at the terminal c of the selected cell and the input data applied to the terminal a appears at the terminal d of the selected cell.

Referring to FIG. 8(b), each of the cells includes buffer gates 22--1 to 22--4. When the control signal of "L" level is applied to the control signal input terminal e of the buffer gate 22--1, an input data applied to the terminal a appears at the terminal c. while, when the control signal of "H" level is applied, no output appears from the buffer gate 22--1. Also, when the control signal of "H" level is applied to the control signal input terminal e of the buffer gate 22-2, an input data applied to the terminal b appears at the terminal c, while, when the control signal of "L" level is applied, no output appears from the buffer gate 22--2. The buffer gates 22--3 and 22--4 are similar to the buffer gates 22--2 and 22--1 respectively in their operation mode.

When, for example, all the control signals s₀ to s₂ are in their "L" level in FIG. 8(a), that is, when s₀ =s₁ =S₂ =0 as shown in FIG. 9, a data train {1, 2, 3, 4, 5, 6, 7, 8} applied to the input terminals i₁ to i₈ appears intact as the original data train {1, 2, 3, 4, 5, 6, 7, 8} at the output terminals 0₁ to 0₈ in FIG. 8(a). On the other hand, when s₂ =1 and s₀ =S₁ =0, the data train {1, 2, 3, 4, 5, 6, 7, 8} applied to the input terminals i₁ to i₈ appear as a permutated data train {5, 6, 7, 8, 1, 2, 3, 4} at the output terminals o₁ to o₈.

Selectors 4 and 5 change over or select the address inputs applied to the memory circuit 1. Depending on whether data to be handled are applied from the row direction or column direction, the selector 4 selects the address values of v₀ =u₀, v₁ =u₁ and v₂ =u₂ ; or v₀ =u₀, v₁ =u₁ and v₂ u₂ and applies such address values to the memories m₁ to m₈ shown in FIG. 7.

FIG. 10 shows in detail the structure of the selector 4. Referring to FIG. 10, the selector 4 includes an inverter gate 23, an OR gate 24 and buffer gates 25--1 to 25--6. A control signal t₁ is applied through the inverter gate 23 to the OR gate 24. When the OR gate 24 generates its output signal of "H" level, an input signal u₀ applied to the buffer gate 25--1 appears as an output signal v₀, while, when the output of the OR gate 24 is in its "L" level, no output appears from the buffer gate 25--1. On the other hand, when the OR gate 24 generates its output signal of "L" level, an input signal u₀ applied to the buffer gate 25--2 appears as an inverted output signal v₀ =u₀, while, when the output of the OR gate 24 is in its "H" level, no output appears from the buffer gate 25--2.

Another control signal t₀ is applied directly to the OR gate 24 and buffer gates 25--3 to 25--6. When the control signal t₀ is in its "H" level, input signals u₁ and u₂ applied to the buffer gates 25--3 and 25--5 appear as output signals v₁ and v₂ respectively, while, when the control signal t₀ is in its "L" level, no outputs appear from these buffer gates 25--3 and 25--5. On the other hand, when the control signal t₀ is in its "L" level, input signals u₁ and u₂ applied to the buffer gates 25--4 and 25--6 appear as inverted output signals v₁ =u₁ and v₂ =u₂ respectively, while, when the control signal t₀ is in its "H" level, no outputs appear from these buffer gates 25--4 and 25--6.

Depending on whether reduced data are to be handled or data to be handled are applied from the row direction or column direction, the selector 5 selects the address values of y₀ =x₀ and z₀ =w₀ ; or y₀ =x₀ and z₀ =w₀ ; or y₀ =x₀ and z₀ =w₀ and applies such address values to the memories m₁ to m₈ shown in FIG. 7.

FIG. 11 shows in detail the structure of the selector 5. Referring to FIG. 11, the selector 5 includes an inverter gate 26, OR gates 27--1, 27--2 and buffer gates 28--1 to 28--4. The control signal t₀ is applied through the inverter gate 26 to the OR gate 27--1 and directly to the OR gate 27--2, while the control signal tl is applied directly to the OR gates 27--1 and 27--2. When the OR gate 27--2 generates its output signal of "H" level, an input signal x₀ applied to the buffer gate 28--1 appears as an output signal y₀, while, when the output of the OR gate 27--2 is in its "L" level, no output appears from the buffer gate 28--1. On the other hand, when the OR gate 27--2 generates its output signal of "L" level, an input signal x₀ applied to the buffer gate 28--2 appears as an inverted output signal y₀ =x₀, while, when the output of the OR gate 27--2 is in its "H" level, no output appears from the buffer gate 28--2. The buffer gates 28--3 and 28--4 are similar in operation to the buffer gates 28--1 and 28--2 respectively.

When data reduced to 1/2 of original data are read out, 8 data are arranged in a shuffled crder. An inverse shuffle circuit 6 is provided so that such 8 data arranged in the shuffled order can be re-arranged into the original order. In the read mode with data reduction, inverse-shuffled 8 data as shown in FIG. 12 appear from the inverse shuffle circuit 6. On the other hand, in the read mode without data reduction, non-inverse-shuffled 8 data appear at the output of the inverse shuffle circuit 6.

FIG. 13 shows in detail the structure of the inverse shuffle circuit 6. Referring to FIG. 13, the inverse shuffle circuit 6 includes buffer gates 29--1 to 29--16. When the control signal tl is in its "H" level, an input signal α₁ applied to the buffer gate 29--1 appears as an output signal β₁, while, when the control signal t₁ is in its "L" level, no output appears from the buffer gate 29--1. On the other hand, when the control signal t₁ is in its "L" level, an input signal α₁ applied to the buffer gate 29--9 appears as an output signal β₁, while, when the control signal t₁ is in its "H" level, no output appears from the buffer gate 29--9. Similarly, when the control signal t is in its "H" level, an input signal α₂ applied to the buffer gate 29--2 appears as an output signal β₂, while, when the control signal t₁ is in its "L" level, no output appears from the buffer gate 29--2. On the other hand, when the control signal t₁ is in its "L" level, an input signal α₃ applied to the buffer gate 29--10 appears as an output signal β₂, while, when the control signal t₁ is in its "H" level, no output appears from the buffer gate 29--10. The buffer gates 29--3 to 29--8 are similar in operation to the buffer gates 29--1 and 29--2. The buffer gates 29--11 to 29--16 are similar in operation to the buffer gates 29--9 and 29--10.

For example, when the control signal t₁ is in its "H" level, and the input signal train {α₁, α₂, α₃, α₄, α₅, α₆, α₇, α₈ } applied to the inverse shuffle circuit 6 is represented by {a, e, b, f, c, g, d, h}, the output signal train {β₁, β₂, β₃, β₄, β₅, β₆, β₇, β₈ } is represented by {a, e, b, f, c, g, d, h}. On the other hand, when the control signal t₁ is in its "L" level, and the input signal train {β₁, α₂, α₃, α₄, α₅, α₆, α₇, α₈ } is represented by {a, e, b, f, c, g, d, h}, the output signal train {β₁, β₂, β₃, β₄, β₅, β₆, β₇, β₈ } is now represented by {a, b, c, d, e, f, g, h} as shown in FIG. 12.

Suppose now that data of 8 bits in the row direction of each sub-block composed of 8×8 bits are arranged in order from the 1st to the 8th column, and data of 8 bits in the column direction are also arranged in order from the 1st to the 8th row. How to write data from the row direction in the block in such a case will be first described.

Input data of 8 bits are permutated in the data permutation circuit 2 depending on the positions of the data in the sub-blocks and the row numbers in the sub-blocks. The control signals s₀ to s₂ are applied to the data permutation circuit 2 so that, for the data belonging to the sub-blocks <1, 1> and <2, 2>, the input data are permutated by making sequential correspondence between the aforementioned permutations P₀, P₁, P₂, . . . , P₇ orderly arranged from P₀ and the row numbers of the input data in the sub-blocks, while, for the data belonging to the sub-blocks <1, 2> and <2, 1>, the input data are permutated by making sequential correspondence between the re-arranged permutations P₁, P₀, P₃, P₂, P₅, P₄, P₇, P₆ obtained by applying the permutation P₁ to the permutations P₀, P₁, P₂, . . . , P₇ orderly arranged from P₀ and the row numbers of the input data in the sub-blocks. The data permutated in the data permutation circuit 2 are stored in the memories m₁ to m₈ in the permutated order.

The address inputs n₀ connected in common to all of the memories m₁ to m₈ specify the block and provide a fixed address value of data in the block. The address inputs a₀ to a₂ provide the address values u₀, u₁ and u₂ respectively. The address values u₀ to u₂ are applied to the memory circuit 1 to specify that an address value given by u₂ u₁ u₀ =i-1 (a decimal representation of u₂ u₁ u₀) corresponds to data in an i-th row in the sub-blocks. Further, as each of the address values v₀ to v₂, v_(j) =u_(j) (0≦j≦2) is supplied to the memory circuit 1 by applying the control signal t₀ of "H" level to the selector 4.

The address inputs b₀ and c₀ provide address values x₀ and w₀ respectively. Address values applied to the memory circuit 1 are x₀ =0, w₀ =0 for the sub-block <1, 1>; x₀ =1, w₀ =0 for the sub-block <1, 2>; x₀ =0, w₀ =1 for the sub-block <2, 1>; and x₀ =1, w₀ =1 for the sub-block <2, 2>. Further, as the address values y₀ and z₀, y₀ =x₀ and z₀ =w₀ are applied to the memory circuit 1 by applying the control signal t₁ of "H" level to the selector 5.

The data in the block numbered in the manner shown in FIGS. 4 and 5 are stored in the memories m₁ to m₈ in a state as shown in FIG. 14. The addresses shown in FIG. 14 are specified by the less-significant 5 bits provided by the address inputs c₀, b₀, a₂, a₁ and a₀.

In the case of data writing from the column direction, input data of 8 bits are permutated in the data permutation circuit 2 depending on the positions of the data in the sub-blocks and the column numbers in the sub-blocks. As in the case of data writing from the row direction, the control signals s₀ to s₂ are applied to the data permutation circuit 2 so that, for the data belonging to the sub-blocks <1, 1> and <2, 2>, the input data are permutated by making sequential correspondence between the aforementioned permutations P₀, P₁, P₂, . . . , P₇ orderly arranged from P₀ and the column numbers of the input data in the sub-blocks, while, for the data belonging to the sub-blocks <1, 2> and <2, 1>, the input data are permutated by making sequential correspondence between the permutations P₁, P₀, P₃, P₂, P₅, P₄, P₇, P₆ attained by applying the permutation P₁ to the permutations P₀, P₁, P₂, . . . , P₇ orderly arranged fro P₀ and the column numbers of the input data in the sub-blocks. The data permutated in the data permutation circuit 2 are stored in the memories m₁ to m₈ in the permutated order. The address values u₀ to u₂ provided by the address inputs a₀ to a₂ are applied to the memory circuit 1 to specify that an address value given by u₂ u₁ u₀ =i-1 (a decimal representation of u₂ u₁ u₀) corresponds to data in an i-th column in the sub-blocks <1, 1> and <2, 2>. In the case of the data belonging to the sub-blocks <1, 2> and <2, 1>, address values are permutated in the order of 1, 0, 3, 2, 5, 4, 7, 6 by applying the aforementioned permutation P₁ to 0, 1, 2, . . . 7 which are orderly arranged from 0 and which indicate decimal representations of u₂ u₁ u₀. Such address values making sequential correspondence with the column numbers of the input data in the sub-blocks are applied to the memory circuit 1. Further, as each of the address values v₀ to v₂, v_(j) =u_(j) (0≦j≦2) is applied to the memory circuit 1 by applying the control signal t₀ of "L" level to the selector 4. The other address values are the same as those described with reference to the case of data writing from the row direction. FIG. 15 shows the relation between the column numbers in the sub-blocks <1, 1° to <2, 2> and the corresponding address values c₀ b₀ a₂ a₁ a₀ (decimal representations of c₀ b₀ a₂ a₁ a₀) applied to the memories m₁ to m₈. Thus, when the data are stored in the memories in the manner above described in the case of data writing from the column direction, the data can be allocated and stored in the memories in entirely the same manner as the data allocation and storage shown in FIG. 14 representing the case of data writing from the row direction.

Description will now be directed to reading of data from the memories m₁ to m₈. Suppose first the case where data of 8 bits arranged in the row direction are read out without any data reduction or in a standard mode. Since the data in the block shown in FIGS. 4 and 5 are stored as shown in FIG. 14, the manner of applying the address values to the memories m₁ to m₈ is the same as that of data writing from the row direction, thereby reading out the data from the memories m₁ to m₈.

In the data read out from the memories m₁ to m₈, the data arrangement has been changed as a result of data permutation depending on the sub-block number and the row number of the data in the sub-block. Therefore, the data are permutated into the original order in the data permutation circuit 3. When the data permutated according to the aforementioned permutation P_(k) (0≦k≦7) are subjected to the same permutation P_(k), the data arrangement is restored to the original arrangement (P_(k) ·P_(k) =P₀). Thus, the control signals s₀ to s₂ are applied to the data permutation circuit 3 so that, for the data belonging to the sub-blocks <1, 1> and <2, 2°, sequential correspondence between the permutations P₀, P₁, P₂, . . . , P₇ orderly arranged from P₀ and the row numbers of the read-out data in the sub-blocks can permutate the data into the original arrangement, while, for the data belonging to the sub-blocks <1, 2° and <2, 1>, sequential correspondence between the permutations P₁, P₀, P₃, P₂, P₅, P₄, P₇, P₆ arranged in the above order and the row numbers of the read-out data in the sub-blocks can permutate the data into the original arrangement. The output data from the data permutation circuit 3 appear intact through the inverse shuffle circuit 6.

Suppose then the case where data of 8 bits arranged in the column direction are read out without any data reduction or in a standard mode. The manner of applying address values to the memories m₁ to m₈ is to the same as that of data writing from the column direction, thereby reading out the data from the memories m₁ to m₈.

In the data read out from the memories m₁ to m₈, the data arrangement has been changed as a result of data permutation depending on the sub-block number and the column number of the data in the sub-block. Therefore, the data are permutated into the original order in the data permutation circuit 3. When the data permutated according to the aforementioned permutation P_(k) (0≦k≦7) are subjected to the same permutation P_(k), the data arrangement is restored to the original arrangement (P_(kl) ·P_(k) =P₀). Thus, the control signals s₀ to s₂ are applied to the data permutation circuit 3 so that, for the data belonging to the sub-blocks <1, 1> and <2, 2>, sequential correspondence between the permutations P₀, P₁, P₂, . . . , P₇ orderly arranged from P₀ and the column numbers of the read-out data in the sub-blocks can permutate the data into the original arrangement, while, for the data belonging to the subblocks <1, 2> and <2, 1°, sequential correspondence between the permutations P₁, P₀, P₃, P₂, P₅, P₄, P₇, P₆ arranged in the above order and the column numbers of the read-out data in the sub-blocks can permutate the data into the original arrangement. The output data from the data permutation circuit 3 appear intact through the inverse shuffle circuit 6.

Suppose then the case where data of 8 bits arranged in the row direction are read out with a data reduction rate of 1/2, that is, for example, the oddnumbered data in each row are read out. The address inputs n₀ connected in common to all of the memories m₁ to m₈ specify the block and provide a fixed address value in the block. The address values u₀ to u₂ provided by the address inputs a₀ to a₂ are applied to the memory circuit 1 to specify that an address value given by u₂ u₁ u₀ =i₀ (a decimal representation of u₂ u₁ u₀, i₀ : remainder of division of i-1 by 8) corresponds to data in an i-th row (1≦i≦16) in the block. Further, as each of address values v₀ to v₂, v_(j) =u_(j) (0≦j≦2) is supplied to the memory circuit 1, while applying the control signal t₀ of "H" level to the selector 4.

The address inputs b₀ and c₀ provide address values x₀ and w₀ respectively. Address values applied to the memory circuit 1 are x₀ =0, w₀ =0 for reading out the data in the odd-numbered rows between the 1st and 8th rows in the block; x₀ =1, w₀ =0 for reading out the data in the even-numbered rows between the 1st and 8th rows in the block; x₀ =1, w₀ =1 for reading out the data in the odd-numbered rows between the 9th and 16th rows in the block; and x₀ =0, w₀ =1 for reading out the data in the even-numbered rows between the 9th and 16th rows in the block. The control signal t₀ applied to the selector 5 is in its "H" level, since the control signal t₀ applied to the selector 4 is in its "H" level. As addresses values values y₀ and z₀, y₀ =x₀ and z₀ =w₀ are applied to the memory circuit 1 while applying the control signal t₁ to "L" level. FIG. 16 shows the address values c₀ b₀ a₂ a₁ a₀ (decimal representations of c₀ b₀ a₂ a₁ a₀) applied to the memories m₁ to m₈ when the odd-numbered data in each row are extracted to read out data of 8 bits reduced with the data reduction rate of 1/2.

The data read out from the memories m₁ to m₈ are permutated in the data permutation circuit 3 according to the row number in the block. The control signals s₀ to s₂ are applied to the data permutation circuit 3 so that the lst and 10th rows in the block shown in FIG. 16 correspond to the permutation P₀ ; the 2nd and 9th rows correspond to the permutation P₁ ; the 3rd and 12th rows correspond to the permutation P₂ ; the 4th and 11th rows correspond to the permutation P₃ ; the 5th and 14th rows correspond to the permutation P₄ ; the 6th and 13th rows correspond to the permutation P₅ ; the 7th and 16th rows correspond to the permutation P₆ ; and the 8th and 15th rows correspond to the permutation P₇. FIG. 17 shows the data of 8 bits provided as a result of extraction of the odd-numbered data in the individual rows, hence, as a result of reduction of the data with the data reduction rate of 1/2 and shows also the.data permutated in the data permutation circuit 3.

The control signal t₁ applied to the inverse shuffer circuit 6 is in the "L" level which is the same as that applied to the selector 5, and the output data from the inverse shuffle circuit 6 are inverse shuffled as shown in FIG. 12. In the manner described above, extracted odd-numbered data of 8 bits appear from the frame inverse shuffle circuit 6.

Suppose then the case where data of 8 bits arranged in the column direction are read out with a data reduction rate of 1/2, that is, for example, the odd-numbered data in each column are read out. The address inputs n₀ connected in common to all of the memories m₁ to m₈ specify the block and provide a fixed address value in the block. The address values u₀ to u₂ provided by the address inputs a₀ to a₂ are applied to the memory circuit 1 to specify that an address value given by u₂ u₁ u₀ =2 * [(i-1)/2] (a decimal representation of u₂ u₁ u₀, [A]: a maximum integer not larger than A) corresponds to data in an i-th row (1≦i≦16) in the block. Further, as address values v₀ to v₂, v₀ =u₀, v₁ =u₀ and v₂ =u₂ are applied to the memory circuit 1 while applying the control signal t₀ of "L" level and control signal t₁ of "L" level to the selector 4.

The address inputs b₀ and c₀ provide address values x₀ and w₀ respectively. Address values applied to the memory circuit 1 are x₀ =0, w₀ =0 for reading out the data in the odd-numbered rows between the 1st and 8th rows in the block; x₀ =0, w₀ =1 for reading out the data in the even-numbered rows between the 1st and 8th rows in the block; x₀ =1, w₀ =1 for reading out the data in the odd-numbered rows between the 9th and 16th rows in the block; and x₀ =1, w₀ =0 for reading out the data in the even-numbered rows between the 9th and 16th rows in the block. The control signals t₀ of "L" level and t₁ to "L" level applied to the selector 4 are also applied to the seclector 5. As address values y₀ and z.sub. 0, y₀ =x₀ and z₀ =w₀ are applied to the memory circuit 1. FIG. 18 shows the address value c₀ b₀ a₂ a₁ a₀ (decimal representations of c₀ b₀ a₂ a₁ a₀) applied to the memories m₁ to m₈ when the odd-numbered data in each column are extracted to read out data of 8 bits reduced with the data reduction rate of 1/2.

The data read out from the memories m₁ to m₈ are permutated in the data permutation circuit 3 according to the column number in the block. The control signals s₀ to s₂ are applied to the data permutation circuit 3 so that the 1st and 10th columns in the block shown in FIG. 18 correspond to the permutation P₀ ; the 2nd and 9th columns correspond to the permutation P₁ ; the 3rd and 12th columns correspond to the permutation P₂ ; the 4th and 11th columns correspond to the permutation P₃ ; the 5th and 14th columns correspond to the permutation P₄ ; the 6th and 13th columns correspond to the permutation P₅ ; the 7th and 16th columns correspond to the permutation P₆ ; and the 8th and 15th columns correspond to the permutation P₇. FIG. 19 shows the data of 8 bits provided as a result of extraction of the odd-numbered data in the individual columns, hence, as a result of reduction of the data with the data reduction rate of 1/2 and shows also the data permutated in the data permutation circuit 3.

The control signal t₁ applied to the inverse shuffle circuit 6 is in its "L" level which is the same as that applied to the selector 4, and the output data from the inverse shuffle circuit 6 are inverse shuffled as shown in FIG. 12. In the manner described above, extracted odd-numbered data of a bits appear from the inverse shuffle circuit 6.

Writing of data from the row direction, writing of data from the column direction, standard reading of data and 1/2-reduced reading of data can be carried out in 8-bit parallel relation in the manner described above.

In the aforementioned embodiment of the present invention, odd-numbered data are read out when data are extracted with the data reduction rate of 1/2. However, even-numbered data can be similarly extracted by changing the address values applied to the memory circuit 1.

When it is desired to write and read all the data in 8-bit parallel relation at the same processing speed from both the row direction and column direction, all the data are preferably divided into blocks of 16×16 bits having 16 bits in each of the row and column directions, and the operation described with reference to the aforementioned embodiment is preferably carried out for each of the blocks.

Reading of data with a data reduction rate of 1/2 h (h≦2) can be similarly attained utilizing an expansion of the principle of the operation described with reference to the aforementioned embodiment. 

We claim:
 1. A data storage apparatus comprising:means for permutating data by making sequential correspondence between input data of 2^(n).sbsp.1 bits and a set of permutations P_(k) including permutations P₂.sbsp.l indicative of execution of permutations of all of (2^(l+1).i-2^(l) -j)th data and (2^(l+1).i-j)th data among 2^(n).sbsp.1 data, composed permutations P_(m) indicative of subsequent execution of different permutations P₂.spsb.l of data and an identity permutation P_(o) indicative of execution of no permutation of data; a memory circuit including independently operable 2.sbsp.n¹ memories m₁, m₂, . . . m₂.sbsp.n₁ for storing said permutated data, and n₁ address inputs a₀, a₁, . . . , a_(n).sbsp.1₋₁ connected to each of said 2^(n).sbsp.1 memories in such a relation that common address inputs a_(l) to memories m₂.spsb.l+1.sub..i-2.spsb.l_(-j) apply an address value u_(l) and common address inputs a_(l) to memories m₂.spsb.l+1.sub..i-j apply an address value v_(l) ; means for changing over said address values u_(l) and v_(l) to v_(l) =u_(l) or v_(l) =u_(l) ; and means for permutating read-out data by making sequential correspondence between said read-out data and said set of permutations, where

    0≦l≦n.sub.1 -1,

    1≦i≦2.sup.n.sbsp.1.spsb.-1-l

    0≦j≦2.sup.l -1,

    m=l.sub.1 +l.sub.2 +. . . +l.sub.k,

and

    0≦k≦2.sup.n.spsb.1 -1.


2. A data storage apparatus as claimed in claim 1, wherein one of said permutations P_(k) is applied to said set of permutations P₀, P₁, P₂, . . . , P₂.spsb.n1₋₁ orderly arranged from P₀ to determine the order of permutations for permutating the input data of 2^(n).spsb.1 bits arranged in the row direction and column direction in a block composed of 2^(n).sbsp.1 ×2^(n).sbsp.1 bits; the input data are permutated by making sequential correspondence between the permutations of the determined order and the row or column numbers of the input data in the block; the address values u_(l) and v_(l) applied to the memories are all selected to be u_(l) =v_(l) corresponding to the data positions during data writing and reading from the row direction (column direction) in the block; the address values u_(l) and v_(l) applied to the memories are all selected to be v_(l) =u_(l) corresponding to the data positions during data writing and reading from the column direction (row direction) in the block; and the data of 2^(n).sbsp.1 bits read out in the row direction (or column direction) in the block are permutated by making correspondence between one of said permutations P_(k) and the row (column) numbers of the data in the block, whereby the data of 2^(n).sbsp.1 bits arranged in the row direction in the block and the data of 2^(n).sbsp.1 bits arranged in the column direction in the block can be written in and read out from the memories in bit-parallel relation of 2^(n).sbsp.1 bits.
 3. A data storage apparatus as claimed in claim 1, wherein the data in the block composed of 2^(2n).sbsp.1 bits are divided into groups of data of 2^(n).sbsp.1 bits constituting each of sub-blocks; one of said permutations P_(k) is applied to said set of permutations P₀, P₁, P₂, . . . , P₂.spsb.n1₋₁ orderly arranged from P₀ to determine the order of permutations for permutating the input data of 2^(n).sbsp.1 bits in the sub-block; the input data are permutated by making correspondence between the permutations of the determined order and the positions of the sub-blocks in the block; the address values u_(l) and v_(l) applied to the memories are all selected to be u_(l) =u_(l) corresponding to the data positions during data writing and during data reading without any data reduction; the address values u_(l) and v_(l) applied to the memories are selected to be v_(l) =u_(l) (0≦l≦h₁ -1) and v_(l) =u_(l) (h₁ ≦ l≦n₁ -1) corresponding to the data positions to meet a data reduction rate of 1/2 h₁ (1≦h₁ ≦n₁) during data reading with data reduction; the data of 2^(n).sbsp.1 bits read out in the block are permutated by making correspondence between one of said permutations P_(k) and the data positions in the block; and the data shuffled due to the data reduction are restored to the original arrangement, whereby reading of the data of 2^(n).sbsp.1 bits in the block with the data reduction rate of 1/2^(h).sbsp.1 can be effected in bit-parallel relation of 2^(n).sbsp.1 bits.
 4. A data storage apparatus as claimed in claim 1, wherein said permutating means is a circuit including n¹ ×2^(n).sbsp.1⁻¹ cells each of which permutates two input data and which are controlled by n₁ control signals, and each of the cell groups each including the 2^(n).sbsp.1⁻¹ cells is controlled by the same control signal for effecting the data permutation.
 5. A data storage apparatus comprising:means for permutating data by making sequential correspondence between input data of 2^(n).sbsp.1 bits including permutations P₂.spsb.l indicative of execution of permutations of all of (2^(l+1).i-2-j)th data and (2^(l+1). i-j)th data among 2^(n).sbsp.1 data, composed permutations P_(m) indicative of subsequent execution of different permutations P₂.spsb.l of data and an identity permutation P₀ indicative of execution of no permutation of data; a memory circuit including independently operable 2^(n).sbsp.1 memories m₁, m₂, . . . , m₂.sbsp.n1 for storing said permutated data, n₁ address inputs a₀, a₁, . . . , a_(n).spsb.1₋₁ connected to each of said 2^(n).sbsp.1 memories in such a realtion that common address inputs a_(l) to memories m₂.spsb.l+1.sub..i-2.spsb.l_(-j) apply an address value u_(l) and common address inputs a_(l) to memories m₂.spsb.l+1.sub..i-j apply an address value v_(l), n₂ address inputs b₀, b₁, . . . , b_(n).spsb.2₋₁ connected to each of said 2^(n).sbsp.1 memories in such a relation that common address inputs b_(s) to memories m₂.sbsp.t+1.sub..p-2.sbsp.t_(-q) apply an address value x_(s) and common address input b_(s) to memories m₂ .spsb.t+1.sub..p-q apply an address value y_(s), and n₂ address inputs c₀, c₁, . . . , c_(n).sbsp.2₋₁ connected to said 2^(n).sbsp.1 memories in such a relation that common address inputs c_(s) to the memories m₂.sbsp.t+1.sub..p-2.sbsp.t-q apply an address value w_(s) and common address inputs c_(s) to the memories m₂.sbsp.t+1.sub..p-q apply an address value z_(s) ; means for changing over said address values u_(l), v_(l), x_(s), y_(s), w_(s) and z_(s) to v_(l) =u_(l) or v_(l) =u_(l), y_(s) =x_(s) or y_(s) =x_(s), or Z_(s) =w_(s) or z_(s) =w_(s) ; and means for permutating read-out data by making sequential correspondence between said read-out data and said set of permutations, where

    n.sub.1, n.sub.2 ≧1,

    0≦l≦n.sub.1 -1,

    1≦i≦2.sup.n.sbsp.1.sup.-1-l,

    0≦j≦2.sup.l -1,

    m=l.sub.1 +l.sub.2 +. . . +l.sub.k,

    0≦k≦2.sup.n.sbsp.1 -1,

    0≦s≦n.sub.2 -1,

    1≦p≦2.sup.n.sbsp.1.sup.-1-t,

(t: remainder of division of s by n₁)

    0≦q≦2.sup.t -1,

and

    1≦h≦n.sub.2.


6. A data storage apparatus as claimed in claim 5, wherein the data in the block composed of 2^(n).sbsp.1^(+n).sbsp.2 bits arranged in the row and column directions respectively are divided into groups each including 2^(n).sbsp.1 bits in the row and column directions respectively to constitute sub-blocks each composed of 2^(n).sbsp.1 ×2^(n).sbsp.1 bits; one of said permutations P_(k) is applied to said set of permutations P₀, P₁, P₂, . . . , P₂.spsb.n₁.spsb.-1 orderly arranged from P₀ to determine the order of permutations for the input data of 2^(n).sbsp.1 bits in the row direction (column direction) in the sub-block relative to the position of the sub-block in the block thereby permutating the input data by making sequential correspondence between the permutations of the determined order and the row (column) number of the input data in the sub-block; the address values u_(l) and v_(l) applied to the memories are all selected to be v_(l) =u_(l) corresponding to the positions of the data during data writing and reading from the row direction (column direction) in said block; the address values u_(l) and v_(l) applied to the memories are all selected to be v_(l) =u_(l) during data writing and during data reading without any data reduction from the column direction (row direction); the address values u_(l) and v_(l) are selected to be v_(l) =u_(l) (l<h₁) and v_(l) =u_(l) (l≦h₁) corresponding to the positions of the data during data reading with a data reduction rate of 1/2^(h).sbsp.1 (1≦h₁ ≦n₂) from the column direction (row direction); the address values x_(s), y_(s), w_(s) and z_(s) applied to the memories are all selected to be y_(s) =x_(s) and z_(s) =w_(s) corresponding to the positions of the data during data writing and during data reading without any data reduction; the address values x_(s), y_(s), w_(s) and z_(s) are all selected to be z_(s) =w_(s), y_(s) =x_(s) (s<h₁) and y_(s) =x_(s) (s≦h₁) corresponding to the positions of the data during data reading from the row direction (column direction) with a data reduction rate of 1/2^(h).sbsp.1 (1≦h₁ ≦n₁); the address values x_(s), y_(s), w_(s) and z_(s) are all selected to be z_(s) =w_(s), y_(s) =x_(s) (h₁ -n₁ ≦s<h₁) and y_(s) =x_(s) (s<h₁ -n₁, s≦h₁) corresponding to the positions of the data during data reading from the row direction (column direction) with a data reduction rate of 1/2^(h).sbsp.1 (n₁ ≦h₁ ≦n₂); the address values x_(s), y_(s), w_(s) and z_(s) are all selected to be y_(s) =x_(s), z_(s) =w_(s) (s<h₁) and z_(s) =w_(s) (s≦h₁) corresponding to the positions of the data during data reading from the column direction (row direction) with a data reduction rate of 1/2^(h).sbsp.1 (1≦h₁ ≦n₁); the address values x_(s), y_(s), w_(s) and z_(s) are all selected to be y_(s) =x_(s), z_(s) =w_(s) (h₁ -n₁ ≦s≦h₁) and z.sub. s =w_(s) (s<h₁ -n₁ s<h₁) corresponding to the positions of the data during data reading from the column direction (row direction) with a data reduction rate of 1/2^(h).sbsp.1 (n₁ <h₁ ≦n₂); the data of 2^(n).sbsp.1 bits read out in the row direction (or column direction) in said block are permutated by making correspondence between one of said permutations P_(k) and the row (column) numbers of the data in said block; and the data shuffled during the data reduction are restored to the original arrangement, whereby writing of the data of 2^(n).sbsp.1 bits in the row direction and column direction in the block and reading of the data of 2^(n).sbsp.1 bits in the row direction and column direction in the block with a data reduction rate of 1/2^(h).sbsp.1 can be effected in bit-parallel relation of 2^(n).sbsp.1 bits. 